 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloCurso;
import com.ipartek.formacion.gestformwww.modelo.ModeloTipoCurso;
import com.ipartek.formacion.gestformwww.modelo.beans.Curso;
import com.ipartek.formacion.gestformwww.modelo.beans.FiltroCurso;
import com.ipartek.formacion.gestformwww.modelo.beans.TipoCurso;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Los objetos de esta clase se encargan de recoger y devolver todo lo necesario a la jsp Nueva Convocatoria.
 * @author David y Josean
 */
public class NuevaConvocatoriaAccion implements Accion {

    /**
     * Método que recoge y transforma los datos de la jsp.
     * @param servlet HttpServlet , request HttpRequest, response HttpServletResponse
     * @return ejecuta AccionRouter
     **/
    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        HttpSession session = request.getSession();
        AccionRouter router = null;
        ArrayList<TipoCurso> alTipoCursos = new ArrayList();
        Boolean logueado = (Boolean) session.getAttribute("usuario");
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd");
        Date hoy = null;
        if (logueado == null) {
            router = new AccionRouter("inicio", false);
        } else {
            ArrayList<Curso> alCursos = null;
            Curso curso = null;
            TipoCurso tipoCurso = null;


            ModeloTipoCurso TipCur = (ModeloTipoCurso) servlet.getServletContext().getAttribute("ModeloTipoCurso");
            ModeloCurso mTipCur = (ModeloCurso) servlet.getServletContext().getAttribute("ModeloCurso");
            try {
                alTipoCursos = mTipCur.listarTipoCurso();
            } catch (GestorFormacionExcepcion gfe) {
                Logger.getLogger(NuevaConvocatoriaAccion.class.getName()).log(Level.SEVERE, null, gfe);
                session.setAttribute("excepciones", gfe.getMessage());
            }
            //Guardamos los datos en el request


            ModeloCurso mCur = (ModeloCurso) servlet.getServletContext().getAttribute("ModeloCurso");

            //Guardamos los datos en el request

            //Recogemos los datos del request
            if (request.getParameter("txtBuscarCursos") == null) {
                if (request.getParameter("id") != null) {
                    if (request.getParameter("id").compareTo("-1") != 0) {
                        try {
                            curso = mCur.visualizarCurso(Integer.parseInt(request.getParameter("id")));
                            tipoCurso = TipCur.buscarTipoCurso(curso.getTipCurId());
                            alCursos = mCur.getTodosCursos();
                        } catch (GestorFormacionExcepcion gfe) {
                            Logger.getLogger(NuevaConvocatoriaAccion.class.getName()).log(Level.SEVERE, null, gfe);
                            session.setAttribute("excepciones", gfe.getMessage());
                        }
                        alTipoCursos = null;
                    } else {
                        alCursos = null;
                    }
                }
            } else if (request.getParameter("txtBuscarCursos").compareTo("") == 0) {
                try {
                    alCursos = mCur.getTodosCursosActivos();
                } catch (GestorFormacionExcepcion gfe) {
                    Logger.getLogger(NuevaConvocatoriaAccion.class.getName()).log(Level.SEVERE, null, gfe);
                    session.setAttribute("excepciones", gfe.getMessage());
                }
            } else {
                FiltroCurso filtro = new FiltroCurso();
                filtro.setNombre(request.getParameter("txtBuscarCursos"));
                filtro.setPagsiguiente(1);
                filtro.setElementospag(9999);
                filtro.setEstado(1);
                filtro.setTipo(0);
                filtro.setDuracion(0);
                hoy = new Date();
                filtro.setFechafincom(sdf.format(hoy));
                try {
                    alCursos = mCur.listarCursos(filtro);
                } catch (GestorFormacionExcepcion gfe) {
                    Logger.getLogger(NuevaConvocatoriaAccion.class.getName()).log(Level.SEVERE, null, gfe);
                    session.setAttribute("excepciones", gfe.getMessage());
                }
            }
            request.setAttribute("tipoCursos", alTipoCursos);
            request.setAttribute("Cursos", alCursos);
            request.setAttribute("Curso", curso);
            request.setAttribute("TipoCurso", tipoCurso);
            request.setAttribute("contenido", "nueva-convocatoria");
            router = new AccionRouter("principal");


        }
        return router;
    }

    public void inicializa(AccionFactory factory) {
    }
}
